有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使Hibernate标准只包含所需字段

我还有下一节课:

@Entity
@Table(name="A")
public class A implements Serializable{

    @Id
    @Column(name="a_id")
    private long aId;

    @ManyToOne
    @JoinColumn(name="b_id")    
    private B b;
}

@Entity
@Table(name="b")
public class B implements Serializable{

    @Id
    @Column(name="b_id")
    private long bId;

    @Column(name="b_name")
    private String name;

    @Column(name="b_age")
    private String age;

    @OneToMany(mappedBy="b")
    private Set<A> a;        
}

这门课我有能手和能手

当我尝试执行下一个标准时

session.createCriteria(A.class, "a_table")
             .createAlias("a_table.b", "b_table")
             .add(Restrictions.eq("b_table.age", "11"))
             .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)
             .list();

在hibernate生成的SQL中,我有B中的所有字段(我也指字段“name”)。 我怎样才能使冬眠只带来所需的田地

如果In-criteria在许多表中存在许多别名,则会增加执行时间。 谢谢


共 (1) 个答案

  1. # 1 楼答案

    尝试使用投影。也许是这样的:

    Criteria cr = session.createCriteria(User.class)
    .setProjection(Projections.projectionList()
      .add(Projections.property("id"), "id")
      .add(Projections.property("Name"), "Name"))
    .setResultTransformer(Transformers.aliasToBean(User.class));
    

    List=cr.List()